1. Field of the Invention
The invention relates generally to controllers for computer pointing devices and specifically to controllers for use with pointing devices generating data packets of different sizes.
2. Description of the Related Art
Modern notebook or laptop personal computers typically provide an internal built-in pointing device for movement of the display cursor, as well as a connector for connecting an external pointing device for control of the display cursor. FIG. 1 shows a block diagram of the major hardware components of a typical notebook computer 10 with internal and external pointing devices.
The notebook computer 10 includes a keyboard and auxiliary device controller (KBC) 12 connected to a keyboard 14, internal pointing device 16, and external pointing device 18. The keyboard 14 is connected to the KBC 12 via a keyboard interface 20. The internal pointing device 16 is connected to the KBC 12 via a first auxiliary interface 22. For notebook computers, the internal pointing device 16 is typically a touch pad, trackball, or pointing stick built into the computer to control movement of the display cursor. The external pointing device 18 is connected to the KBC 12 via a second auxiliary interface 24. The external pointing device 16 is typically a mouse or trackball connected to an external connector of the computer, to provide an alternative means for control of the display cursor.
The KBC 12 is connected to a system bus 26 which is connected to CPU 28. The KBC 12 sends and receives data and control signals to and from the system bus 26, and receives data from the keyboard 14, internal pointing device 16, and external pointing device 18.
The standard IBM PS/2 mouse generates data packets containing three bytes of data, as shown in FIG. 2. These three bytes include one status byte containing data relating to the pointing device buttons and other status data (40), one data byte for data relating to movement of the cursor in the horizontal or X direction (42), and one data byte for data relating to movement of the cursor in the vertical or Y direction (44). This conventional data packet thus provides three bytes to describe cursor movement in a two-dimensional (i.e. X-Y) plane.
The new Microsoft IntelliMouse (and compatible pointing devices made by other manufacturers) includes a wheel control for scrolling the display screen (this can be considered control of the cursor movement in the Z direction). To accommodate this additional cursor control function, the IntelliMouse can operate in an extended mode in which it generates data packets containing four bytes, as shown in FIG. 3. Three of the bytes contain the same data as a standard mouse, i.e. one status byte (40) and two data bytes for cursor movement in the X and Y directions (42 and 44), and the fourth byte contains data relating to scrolling of the display (46). This type of mouse will be referred to as an extended mode pointing device.
The notebook computer's operating system includes a software device driver (e.g. a mouse driver) which processes data received from the internal and external pointing devices in order to generate signals to control the movement of the display cursor. The device driver typically switches to an extended mode in order to accept the four-byte data packets generated by an extended mode pointing device. However, when the mouse driver enables this extended mode, it can no longer accept standard three-byte data packets. Furthermore, in order to switch out of this extended mode, the operating system must typically be restarted.
One existing solution to this problem is to automatically disable the internal pointing device when an external pointing device is connected and the system driver switches the system into extended mode for accepting four-byte data packets. However, this approach makes it impossible to operate both an internal and external pointing device at the same time, and the user cannot use both pointing devices simultaneously.